/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.pnp.actions;

import com.opensymphony.xwork2.*;
import java.sql.SQLException;
import java.util.*;
import java.util.ArrayList;
import org.apache.struts2.interceptor.SessionAware;
import pe.gob.pnp.despachadores.*;

/**
 *
 * @author PC
 */
public class ListaModulos extends ActionSupport implements SessionAware{
    private List<Modulo> lstModulos;
    private Map<String, Object> session;
    private static final long serialVersionUID = 1L;

    @Override
    public String execute(){
        try{
            List<Modulo> modulos=ModuloDespachador.obtenerModulos();
            Usuario usuario=(Usuario)session.get("usuario");
            for(Modulo modulo : modulos){
                List<Recurso> lstRecursos=RecursoDespachador.obtenerRecurosPorModuloUsuario(modulo,usuario);
                modulo.setLstRecursos(lstRecursos);
            }
            //quitar los módulos sin recursos
            List<Modulo> modulosPorBorrar=new ArrayList<Modulo>();
            for(Modulo modulo: modulos){
                if(modulo.getLstRecursos().isEmpty()){
                    modulosPorBorrar.add(modulo);
                }
            }
            for(Modulo modulo : modulosPorBorrar){
                modulos.remove(modulo);
            }
            setLstModulos(modulos);
        }catch(SQLException ex){
            ex.printStackTrace();
            return ERROR;
        }
        return SUCCESS;
    }



    /**
     * @return the lstModulos
     */
    public List<Modulo> getLstModulos() {
        return lstModulos;
    }

    /**
     * @param lstModulos the lstModulos to set
     */
    public void setLstModulos(List<Modulo> lstModulos) {
        this.lstModulos = lstModulos;
    }

    /**
     * @return the session
     */
    public Map<String, Object> getSession() {
        return session;
    }

    /**
     * @param session the session to set
     */
    public void setSession(Map<String, Object> session) {
        this.session = session;
    }
}
